<?php
/**
 * Created by PhpStorm.
 * User: muyu
 * Date: 2018/1/25
 * Time: 20:56
 */

namespace app\lib\exception;
use think\Exception;
use think\exception\Handle;
use  think\facade\Request;
use think\facade\Log;

class ExceptionHandler extends  Handle
{
    private $code;
    private $msg;
    private $errorCode;
  public function render(\Exception $e){
     if($e instanceof BaseException){
        //如果是自定义异常
         $this->code=$e->code;
         $this->msg=$e->msg;
         $this->errorCode=$e->errorCode;

     }else {

         if(config('app_debug')){
            return  parent::render($e);
         }else{
             $this->code = 500;
             $this->msg = '服务器内部错误不想说';
             $this->errorCode = 999;
             $this->recordErrorLog($e);
         }
     }
      $request = Request::instance();
        $result = [
            'msg' => $this->msg,
            'error_code' =>$this->errorCode,
            'request+url'=> $request->url()
        ];
        return json($result,$this->code);
   }
   private function recordErrorLog(\Exception $e){
      Log::init([
          'type'=>'File',
          'path'=>'',
          'level'=>['error']
      ]);
    Log::record($e->getMessage(),'error');
   }
}